package leecode;

import java.util.Arrays;

/**
 * https://leetcode.cn/problems/reverse-integer/
 * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
 * 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。
 * 假设环境不允许存储 64 位整数（有符号或无符号）。
 * <p>
 * 示例 1：
 * 输入：x = 123
 * 输出：321
 * <p>
 * 示例 2：
 * 输入：x = -123
 * 输出：-321
 * <p>
 * 示例 3：
 * 输入：x = 120
 * 输出：21
 * <p>
 * 示例 4：
 * 输入：x = 0
 * 输出：0
 * <p>
 * 提示：
 * -2^31 <= x <= 2^31 - 1
 */
public class No0007_ReverseInteger {
    public long reverse(int x) {
        boolean minusFlag = false;
        if (x < 0) {
            minusFlag = true;
            x = -x;
        }
        int length = (int) Math.log10(x) + 1;
        int[] ints = new int[length];

        int point = 0;
        while (point < ints.length) {
            ints[point] = x % 10;
            x = x / 10;
            point++;
        }
        System.out.println(Arrays.toString(ints));

        long y = 0;
        for (int i = 0; i < ints.length; i++) {
            y += ints[i] * Math.pow(10, ints.length - i - 1);
        }
        if (minusFlag) {
            y = -y;
        }
        return y;
    }

    public static void main(String[] args) {
        No0007_ReverseInteger a = new No0007_ReverseInteger();
        System.out.println(a.reverse(-2147483647));
    }
}
